package mx.ipn.pruebas;

import java.util.ArrayList;

import mx.ipn.persistencia.FabricaDeDAOs;
import mx.ipn.persistencia.dao.*;
import mx.ipn.to.*;

public class PruebaDAOs8 {

	public static void main(String[] args) {

		FabricaDeDAOs fabricaMySQL = FabricaDeDAOs
				.getFabricaDeDAOs(mx.ipn.Constantes.FABRICA_DAOS_MYSQL);
		short resultado;

		// ***********************************************************************************************
		// HORARIO
		System.out
				.println("<<<<<<<<<<<<<<<<<<<<<<<<<HORARIO>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
		try {

			java.text.SimpleDateFormat simpledf = new java.text.SimpleDateFormat(
					"yyyy/MM/dd");
			java.util.Date fecha;

			fecha = simpledf.parse("2008/03/03");
			java.sql.Date fechaSql = new java.sql.Date(fecha.getTime());
			fecha = simpledf.parse("2008/03/11");
			java.sql.Date fechaSql2 = new java.sql.Date(fecha.getTime());
			TurnoTO turnoTO = new TurnoTO();
			turnoTO.setIdTurno(1);

			HorarioDAO horarioDAO = fabricaMySQL.getHorarioDAO();
			HorarioTO horarioTO = new HorarioTO(0, fechaSql, fechaSql2, turnoTO);

			// insert
			if (horarioDAO.insertHorario(horarioTO)) {
				horarioDAO.insertHorario(horarioTO);
				System.out
						.println("+++++++++++++++++++ Insertado correctamente");
			} else
				System.out.println("Falla en la insercion");

			// borra
			resultado = horarioDAO.deleteHorario(2);
			if (resultado == 1)
				System.out
						.println(">>>>>>>>>>>>>>>>>>>>>borrado correctamente");
			else if (resultado == 0)
				System.out.println("Falla en el borrado");
			else if (resultado == -1)
				System.out.println("Ocurrio una excepcion al Borrado");

			// actualiza
			horarioTO.setIdHorario(1);
			turnoTO.setIdTurno(9);
			horarioTO.setTurnoTO(turnoTO);

			resultado = horarioDAO.updateHorario(horarioTO);
			if (resultado == 1)
				System.out
						.println(">>>>>>>>>>>>>>>>>>> Actualizado correctamente");
			else if (resultado == 0)
				System.out.println("Falla en la actualizacion");
			else if (resultado == -1)
				System.out.println("Ocurrio una excepcion");

			// Busca
			System.out.println("------------------------- BUSQUEDA POR ID");
			horarioTO = horarioDAO.findHorarioById(1);
			if (horarioTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("HORARIO");
				ImprimirTO.Imprime(horarioTO);
				System.out.println("TURNO");
				ImprimirTO.Imprime(horarioTO.getTurnoTO());

			} else {
				System.out.println("Falla en la seleccion");
			}

			// busqueda multiple
			System.out.println("**++++++++++++++++++++++ SELECT HORARIO +**");
			java.util.Collection<HorarioTO> listHorarioTO = horarioDAO
					.selectHorario();
			for (int i = 0; i < listHorarioTO.size(); i++) {
				horarioTO = ((ArrayList<HorarioTO>) listHorarioTO).get(i);
				System.out.println("HORARIO");
				ImprimirTO.Imprime(horarioTO);
				System.out.println("TURNO");
				ImprimirTO.Imprime(horarioTO.getTurnoTO());

			}

			fechaSql2 = new java.sql.Date((simpledf.parse("2000/01/01"))
					.getTime());

			// busqueda multiple
			System.out
					.println("**++++++++++++++++++++++ SELECT HORARIO BY RANGO FECHAINI+**");
			listHorarioTO = horarioDAO.selectHorarioByRangoInicio(fechaSql2,
					fechaSql);
			for (int i = 0; i < listHorarioTO.size(); i++) {
				horarioTO = ((ArrayList<HorarioTO>) listHorarioTO).get(i);
				System.out.println("HORARIO");
				ImprimirTO.Imprime(horarioTO);
				System.out.println("TURNO");
				ImprimirTO.Imprime(horarioTO.getTurnoTO());

			}

			// Busca
			System.out.println("------------------- BUSQUEDA POR ID TURNO");
			horarioTO = horarioDAO.selectHorariobyTurno(1);
			if (horarioTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("HORARIO");

				for (int x = 0; x < horarioTO.getListIdHorario().length; x++) {
					System.out.println("IDHORARIO");
					System.out.println(horarioTO.getListIdHorario()[x]);
				}
				for (int x = 0; x < horarioTO.getListFechaInicio().length; x++) {
					System.out.println("FECHAINICIO");
					System.out.println(horarioTO.getListFechaInicio()[x]);
				}
				for (int x = 0; x < horarioTO.getListFechaTermino().length; x++) {
					System.out.println("FECHATERMINO");
					System.out.println(horarioTO.getListFechaTermino()[x]);
				}

				System.out.println("TURNO");
				ImprimirTO.Imprime(horarioTO.getTurnoTO());

			} else {
				System.out.println("Falla en la seleccion");
			}

		} catch (Exception e) {
			System.out.println("Ocurrio una excepcion");
		}
		
		// ***********************************************************************************************
		// //
		// ***********************************************************************************************
		// MOTIVO
		System.out
				.println("<<<<<<<<<<<<<<<<<<<<<<<<<MOTIVO>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
		try {

			TipoMotivoTO tipoTO = new TipoMotivoTO();
			tipoTO.setIdTipoMotivo((short)1);
			
			MotivoDAO motivoDAO = fabricaMySQL.getMotivoDAO();
			MotivoTO motivoTO = new MotivoTO(0,"reprobado","cuando no se termino",tipoTO,true);

			// insert
			if (motivoDAO.insertMotivo(motivoTO)) {
				motivoDAO.insertMotivo(motivoTO);
				System.out
						.println("+++++++++++++++++++ Insertado correctamente");
			} else
				System.out.println("Falla en la insercion");

			// borra
			resultado = motivoDAO.DesActivaMotivo((short)2);
			if (resultado == 1)
				System.out
						.println(">>>>>>>>>>>>>>>>>>>>>borrado correctamente");
			else if (resultado == 0)
				System.out.println("Falla en el borrado");
			else if (resultado == -1)
				System.out.println("Ocurrio una excepcion al Borrado");

			// actualiza
			motivoTO.setIdMotivo(1);
			tipoTO.setIdTipoMotivo((short)2);
			motivoTO.setTipoMotivoTO((tipoTO));

			resultado = motivoDAO.updateMotivo(motivoTO);
			if (resultado == 1)
				System.out
						.println(">>>>>>>>>>>>>>>>>>> Actualizado correctamente");
			else if (resultado == 0)
				System.out.println("Falla en la actualizacion");
			else if (resultado == -1)
				System.out.println("Ocurrio una excepcion");

			// Busca
			System.out.println("------------------------- BUSQUEDA POR ID");
			motivoTO = motivoDAO.findMotivoById(1);
			if (motivoTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("MOTIVO");
				ImprimirTO.Imprime(motivoTO);
				System.out.println("TIPOMOTIVO");
				ImprimirTO.Imprime(motivoTO.getTipoMotivoTO());

			} else {
				System.out.println("Falla en la seleccion");
			}
			
			// Busca
			System.out.println("------------------------- BUSQUEDA POR NOMBRE TIPOMOTIVO");
			motivoTO = motivoDAO.findMotivoByNombreTipoMotivo("reprobado", (short)2);
			if (motivoTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("MOTIVO");
				ImprimirTO.Imprime(motivoTO);
				System.out.println("TIPOMOTIVO");
				ImprimirTO.Imprime(motivoTO.getTipoMotivoTO());

			} else {
				System.out.println("Falla en la seleccion");
			}

			// busqueda multiple
			System.out.println("**++++++++++++++++++++++ SELECT MOTIVO +**");
			java.util.Collection<MotivoTO> listMotivoTO = motivoDAO
					.selectMotivo();
			for (int i = 0; i < listMotivoTO.size(); i++) {
				motivoTO = ((ArrayList<MotivoTO>) listMotivoTO).get(i);
				System.out.println("MOTIVO");
				ImprimirTO.Imprime(motivoTO);
				System.out.println("TIPOMOTIVO");
				ImprimirTO.Imprime(motivoTO.getTipoMotivoTO());

			}
			
			// busqueda multiple
			System.out.println("**++++++++++++++++++++++ SELECT MOTIVO ACTIVO+**");
			listMotivoTO = motivoDAO
					.selectMotivoActivo();
			for (int i = 0; i < listMotivoTO.size(); i++) {
				motivoTO = ((ArrayList<MotivoTO>) listMotivoTO).get(i);
				System.out.println("MOTIVO");
				ImprimirTO.Imprime(motivoTO);
				System.out.println("TIPOMOTIVO");
				ImprimirTO.Imprime(motivoTO.getTipoMotivoTO());
			}

			// Busca
			System.out.println("------------------- BUSQUEDA POR TIPOMOTIVO");
			motivoTO = motivoDAO.selectMotivoByTipo((short)1);
			if (motivoTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("MOTIVO");

				for (int x = 0; x < motivoTO.getListIdMotivo().length; x++) {
					System.out.println("IDMOTIVO");
					System.out.println(motivoTO.getListIdMotivo()[x]);
				}
				for (int x = 0; x < motivoTO.getListNombre().length; x++) {
					System.out.println("NOMBRE");
					System.out.println(motivoTO.getListNombre()[x]);
				}
				for (int x = 0; x < motivoTO.getListDescripcion().length; x++) {
					System.out.println("DESCRIPCION");
					System.out.println(motivoTO.getListDescripcion()[x]);
				}
				for (int x = 0; x < motivoTO.getListActivo().length; x++) {
					System.out.println("ACTIVO");
					System.out.println(motivoTO.getListActivo()[x]);
				}

				System.out.println("TIPOMOTIVO");
				ImprimirTO.Imprime(motivoTO.getTipoMotivoTO());

			} else {
				System.out.println("Falla en la seleccion");
			}
			
			// Busca
			System.out.println("------------------- BUSQUEDA POR TIPOMOTIVO ACTIVO");
			motivoTO = motivoDAO.selectMotivoActivoByTipo((short)2);
			if (motivoTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("MOTIVO");

				for (int x = 0; x < motivoTO.getListIdMotivo().length; x++) {
					System.out.println("IDMOTIVO");
					System.out.println(motivoTO.getListIdMotivo()[x]);
				}
				for (int x = 0; x < motivoTO.getListNombre().length; x++) {
					System.out.println("NOMBRE");
					System.out.println(motivoTO.getListNombre()[x]);
				}
				for (int x = 0; x < motivoTO.getListDescripcion().length; x++) {
					System.out.println("DESCRIPCION");
					System.out.println(motivoTO.getListDescripcion()[x]);
				}
				for (int x = 0; x < motivoTO.getListActivo().length; x++) {
					System.out.println("ACTIVO");
					System.out.println(motivoTO.getListActivo()[x]);
				}

				System.out.println("TIPOMOTIVO");
				ImprimirTO.Imprime(motivoTO.getTipoMotivoTO());

			} else {
				System.out.println("Falla en la seleccion");
			}

		} catch (Exception e) {
			System.out.println("Ocurrio una excepcion");
		}
	}
}
